Amazon QuickSight で任意の 2 日間のデータを比較する方法

Amazon QuickSight で任意の 2 日間のデータを比較する方法

前年同月比を求めるときもこの方法が柔軟性高くかつシンプルな実装で済みます。
Clock Icon2024.07.19

QuickSight を使用してデータ分析していると、任意の 2 点間でデータを比較したいことがよくあります。
本記事では、ユーザーが任意に選択した 2 つの日付のデータを比較する方法を紹介します。

目的

固定の前日比や前年比ではなくユーザーが任意に選択した 2 点間の値の比較を実現します。

完成イメージ

背景

過去に前年同月比を求めるグラフ、テーブルの作成例を紹介しました。

https://dev.classmethod.jp/articles/how-to-create-month-over-month-tables-in-quicksight/

https://dev.classmethod.jp/articles/creating-yoy-charts-in-quicksight/

これらの方法では、作成者側が指定した n 日(年)前の値との比較となり、固定した間隔との比較ができませんでした。
今回は、比較する日付をユーザー側で動的に変更可能にすることを目指します。

サンプルデータ

以下のようなシンプルなサンプルデータを用意しました。
日付、部屋タイプ、予約数の 3 列からなるデータセットです。

検証データ

作り方

選択した任意の日付 A と、日付 B の値を比較するための計算フィールドでsumifを使うのがポイントです。

1. パラメータ作成

比較したい 2 つの日付を選択できるよう、パラメータを作成します。
「開始日」と「終了日」の 2 つのパラメータを設定します。

book__2__csv_analysis-18

同様に「終了日」のパラメータを作成します。

2. 計算フィールド作成

sumIf()で対象の日付の値を持ってきます。足し算したいわけではなく値を参照するために、periodOverPeriodLastValueの代替えとして使ってます。
後ほど引き算して差分を出す都合、nullだった場合は0と返すようにcoalesce()関数を併用します。

coalesce(sumIf([数値のフィールド名], [日付のフィールド名] = [開始日 or 終了日のパラメータ名]) ,0)

計算フィールド

パラメータ BeginDate に対応する計算フィールドの作成例は以下です。

coalesce(sumIf(予約数, 日付 = ${BeginDate}) ,0)

同様に終了日に対応する計算フィールドを作成します。

3. 差分を計算

2 つの日付間の差分を計算するフィールドを作成します。作成した計算フィールド同士の引き算をします。

{作成した計算フィールド1} - {作成した計算フィールド2}

差分計算

計算フィールドの作成例は以下です。

{対象日A(開始日)} - {対象日B(終了日)}

4. テーブル表示

作成した計算フィールドを使用してテーブルを作成します。

テーブル表示

これで、パラメータで選択した 2 つの日付に該当する数値を比較した結果を表示できるテーブルが完成しました。

完成イメージ

まとめ

この方法を使用することで、固定の前日比や前年比ではなくユーザーが任意に選択した 2 点間の比較が可能になります。
periodOverPeriod関数シリーズでは無理があったため、sumIf()で同様の機能を実現できました。

実際のデータセットではより複雑な状況が想定されますので、適宜調整してください。

おわりに

periodOverPeriod関数があるのだからと固執し、長らく任意に選択した 2 点間の数値比較ができなく悲しみに暮れていました。
諦めて他の関数で考えた結果が本記事の内容です。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.